/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufba.lasid.v1.jitclouds.mda;
import br.ufba.lasid.v1.jitclouds.mda.datatypes.enums.ComponentKind;
import br.ufba.lasid.v1.jitclouds.mda.datatypes.enums.ContextKind;
import static br.ufba.lasid.v1.jitclouds.mda.datatypes.enums.MDAConstants.*;
import br.ufba.lasid.v1.jitclouds.mda.datatypes.enums.ProcedureKind;
import br.ufba.lasid.v1.jitclouds.mda.datatypes.report.Report;

/**
 *
 * @author aliriosa
 */
public class JitCloudsMDAFactory {
    
    public enum InstanceKind{
        Xen,
        KVM,
        Eucalyptus
    }
                   
    public static <T> T build(            
            ContextKind contextKind, 
            ComponentKind componentKind
        ) throws Exception
    {
        return null;
    }
    
    
    public static Report newReport(
            ContextKind contextKind, 
            ComponentKind componentKind, 
            ProcedureKind procKind
        ) throws Exception
    {
        
        Report report = new Report();
        
        /**
         * Assign the component and procedure related to this report in 
         * the specified context.
         */
        report.set(Context.name()   , contextKind   );
        report.set(Component.name() , componentKind );
        report.set(Procedure.name() , procKind      );
        
        report.constructName();
        
        /**
         * 
         */
        return report;
    }
    
    
    public static JitCloudsMDAFactory NewMDA() throws Exception{
        return JitCloudsMDAFactory.class.newInstance();
    }
    
}
